-- 1. 接收参数（voucherId：商品ID，userId：用户ID）
local voucherId = ARGV[1]
local userId = ARGV[2]

-- 2. 定义正确的key（加冒号分隔，避免重名）
local stockKey = 'seckill:stock:' .. voucherId  -- 库存key：seckill:stock:1
local orderKey = 'seckill:order:' .. voucherId  -- 订单key（集合）：seckill:order:1

-- 3. 校验库存：先判断key是否存在，避免nil
local stock = redis.call('get', stockKey)
if not stock then  -- 若库存key不存在，视为库存为0
    return 1  -- 库存不足
end
-- 转数字后比较（确保stock是数字）
if tonumber(stock) <= 0 then
    return 1  -- 库存不足
end

-- 4. 校验是否重复下单（操作集合key，语法正确）
if redis.call('sismember', orderKey, userId) == 1 then
    return 2  -- 重复下单
end

-- 5. 扣库存（incrby负数等价于decrby）
redis.call('incrby', stockKey, -1)
-- 6. 记录下单用户（修复字符串拼接语法，用..连接）
redis.call('sadd', orderKey, userId)

return 0  -- 成功